home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / d86v223.arc / COMMANDS.DOC < prev    next >
Text File  |  1987-04-08  |  8KB  |  168 lines

  1. ---COMMANDS.DOC---
  2.  
  3. Debugger Command Language
  4.  
  5. In addition to immediate-execution assembly-language commands, 
  6. there is a set of commands recognized by the debugger.  They are 
  7. identified by the first keyword on the line being a single letter 
  8. (i.e., the second character of the line is a non-letter, usually 
  9. a comma or ENTER). 
  10.  
  11.  
  12. General Operands to Debugger Commands
  13.  
  14. Most of the debugger commands consist of their single-letter 
  15. identifier, followed by a comma, followed by one or more general 
  16. operands, separated by commas.  General operands can be one of 
  17. the following: 
  18.  
  19.    a. a numeric constant, whose format is just as in the assembly 
  20.       language (leading zero means default hex, otherwise default 
  21.       decimal) 
  22.    b. a register name
  23.    c. a user-symbol from the assembly-language program being 
  24.       debugged. 
  25.  
  26.  
  27. Format of Debugger Command Examples
  28.  
  29. Many of the examples given below will be given in double-quotes.  
  30. Note that the double-quotes are not part of the command.  You are 
  31. encouraged to try out the example on the debugger, by typing the 
  32. string within the quotes, not including the quotes, and always 
  33. followed by the ENTER key. Note further that the double-quoted 
  34. string may be broken across two lines of this manual, but that 
  35. does not mean you should type a ENTER where the string is broken-
  36. -debugger commands always consist of a single line, always 
  37. terminated by ENTER. 
  38.  
  39.  
  40. The Debugger Command Set
  41.  
  42. Following is a description of the debugger commands recognized:
  43.  
  44. B  sets and clears the fixed breakpoints of the program.  The 
  45.    debugger has four breakpoints.  Two are transitory; they are 
  46.    automatically cleared after each return from the program to 
  47.    the debugger.  They can be set by the G command. The other two 
  48.    are fixed-- they will remain in effect until you explicitly 
  49.    clear them.  The fixed breakpoints are controlled by this B 
  50.    command. 
  51.  
  52.    You follow the B with zero, one, or two general operands.  If 
  53.    there are zero operands (the B is followed immediately by a 
  54.    ENTER), then both fixed breakpoints are cleared.  If there are 
  55.    one or two operands, then the fixed breakpoints are set to the 
  56.    operands. 
  57.  
  58.    Note that previously-set breakpoints can be implicitly 
  59.    cleared, by overwriting them with other breakpoints.  If your 
  60.    B command has one operand, and there was one breakpoint 
  61.    previously set, the debugger sets the unused breakpoint, so 
  62.    that both remain in effect.  If your B command has one 
  63.    operand, and both breakpoints were previously set, the most 
  64.    recently-set breakpoint is saved, and the older breakpoint is 
  65.    overwritten. 
  66.  
  67.    Examples: if you type "b,numout", the debugger will set a 
  68.    breakpoint at location NUMOUT, which should be a label in the 
  69.    program being debugged. You may start and stop the program 
  70.    many times, the the breakpoint will stay there.  You may even 
  71.    allow the program to stop at NUMOUT repeatedly; the breakpoint 
  72.    is not cleared even if the program stops there.  If you 
  73.    subsequently type the command "b,01000", then there will be 
  74.    breakpoints at both NUMOUT and location hex 01000.  If you 
  75.    then type "b,01200", the first breakpoint NUMOUT is 
  76.    overwritten; the two breakpoints now in effect are 01000 and 
  77.    01200.  The 01000 breakpoint will be next in line to be 
  78.    overwritten.  You may clear both breakpoints by typing "b".  
  79.    There is no way to clear one breakpoint at a time. 
  80.  
  81. F  finds a string of memory bytes.  The memory to be searched 
  82.    starts at the current CS:IP location.  The string being 
  83.    sought contained in memory at the CS:IP location marked with 
  84.    the last Shift-F7 command.  The number of bytes in the target 
  85.    string is given as the first operand to the F command.  For 
  86.    example, F 1 finds the next instance of a single byte value 
  87.    after the current CS;IP.  If the marked location points to a 
  88.    NOP, F 1 will find the next NOP code.
  89.    
  90.    If you provide a second operand to F, it is a "retreat 
  91.    number".  For example, F 2,10 assumes that you are looking for 
  92.    a 2-byte sequence, and you have retreated 10 bytes from the 
  93.    starting location for your search.  When the string is found, 
  94.    F will retreat 10 bytes from that string.  That way you can 
  95.    view the instructions that preceded the found string.  I use 
  96.    feature when I am searching for BIOS and DOS interrupt calls 
  97.    in a program.  I want to retreat before the calls, to see what 
  98.    function numbers were loaded into registers.  I can use the F3 
  99.    key to repeat the searches, giving me a sequence of 
  100.    disassembly displays with the interrupt in the middle. 
  101.    
  102.    F with no operands returns CS:IP to the marked location, in 
  103.    case you want to use F7 to deposit another string to be 
  104.    searched.
  105.    
  106.    If you have never pressed Shift-F7 in this session, the marked 
  107.    location is 0C000 of the program's starting segment.  That's 
  108.    often a good "scratchpad" area for small programs, far from 
  109.    both the program and the stack.  
  110.  
  111. G  starts the user program.  If there are no operands, then G is 
  112.    equivalent to the ctrl-G command.  You can give one or two 
  113.    operands to G, specifying locations within the program at 
  114.    which you wish to return to the debugger. These are 
  115.    "transitory breakpoints"; they are cleared when the program 
  116.    returns to the debugger for any reason. 
  117.  
  118.    Whenever you start the program, at least one instruction from 
  119.    the program will be executed, even if there is a breakpoint at 
  120.    the current instruction pointer location.  This means you can 
  121.    set a breakpoint at the current location; instructing the 
  122.    program to return to the debugger the next time it gets back 
  123.    to the current location. 
  124.  
  125.  
  126. J  jumps to the location indicated by the operand, within the 
  127.    current code segment.  J is useful when you are exploring 
  128.    memory outside of your program's memory area.  In that case, 
  129.    the immediate JMP command is executed from a buffer within 
  130.    your program's original code segment.  JMP would therefore 
  131.    return you to that segment. J will keep you in the distant 
  132.    segment. 
  133.  
  134.  
  135. O  sets a special fixed breakpoint.  Whenever your program calls 
  136.    MSDOS via INT 33, the debugger will monitor the function 
  137.    number passed in the AH register.  If the function number 
  138.    falls within the range specified by this command, the program 
  139.    will trap back to the debugger.  If you give two operands to 
  140.    O, the operands are the lower and upper bounds for the range 
  141.    of trapped functions.  If you give one operand, only that 
  142.    function-number will be trapped.  If you give no operands, any 
  143.    previous O-trap setting is cleared. 
  144.  
  145.    For example, note that function 3F hex is the READ function 
  146.    for MSDOS version 2.  If you want to trap whenever this READ 
  147.    function is invoked, you can issue the command O,03F and then 
  148.    start up your program with the G command.  Another example: 
  149.    suppose you want to insure that a program does not make any of 
  150.    the new Version 3 DOS calls, 59 hex and above.  You can issue 
  151.    the command O,059,0FF and then start your program. 
  152.  
  153.    NOTE: if the second operand is less than the first, then the 
  154.    range wraps around through zero.  For example, O,059,030 traps 
  155.    on 059 through 0FF, and also 0 through 030-- both version 3 
  156.    and version 1 calls. 
  157.  
  158.    SECOND NOTE: The EXIT function, hex 4C is always trapped by 
  159.    D86, regardless of your O-command settings.  The only way you 
  160.    should be able to exit from D86 is via the Q-command.  (If you 
  161.    do succeed in exiting some other way, I want to hear about it.  
  162.    In that case, D86 will become very confused if you reinvoke it 
  163.    before rebooting the computer.) 
  164.  
  165.  
  166. Q  exits the debugger and goes back to the operating system.
  167.  
  168.